home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / sh1x / sh18a.d64 / MPS 802 Ext.SRC. (.txt) < prev    next >
Commodore BASIC  |  1995-03-30  |  8KB  |  311 lines

  1. 3 SYS9*4096
  2. 5 .OPT OO
  3. 10 IN = $EE83;ZEICHEN VOM SERIELLEN PORT LESEN
  4. 20 OUT = $F35F;ZEICHEN IN AUSGABEPUFFER
  5. 30 END = $EE66;SA BEARBEITUNG BEENDEN
  6. 40 PORT = $0240;MEMORY MANAGER
  7. 45 ;******** ORIGINAL BETRIEBSSYSTEM *******
  8. 50 *= $4400 ; ZEICHENSATZ AENDERN
  9. 51 .BYTE $3C,$40,$8C,$92,$9E,$42,$3C,$00;KLAMMERAFFE
  10. 52 *= $4858
  11. 53 .BYTE $FE,$08,$14,$22,$00,$00,$00,$00;KLEINES K
  12. 60 *= $4A79;ROM CHECK UMGEHEN
  13. 61 BNE Z1
  14. 62 Z1 INC $00
  15. 70 *= $4AB1;MEMORY MANAGEMENT
  16. 71 LDA #$01;BIT 0 SETZEN OHNE SPEICHERVERTEILUNG
  17. 72 JSR Z9;ZU AENDERN
  18. 73 JSR $EC61;INITIALISIEREN DER PORTS
  19. 80 *= $5B02;MEMORY MANAGEMENT
  20. 81 LDA PORT;LOW IMPULS VON 12 TAKTZYKLEN
  21. 82 AND #$FE; AUF BIT 0 LEGEN OHNE SPEICHER
  22. 83 STA PORT; VERTEILUNG ZU AENDERN
  23. 84 ORA #$01
  24. 85 JSR Z2
  25. 90 *= $5D01;*** MEMORY MANAGEMENT ***
  26. 91 Z9 ORA PORT
  27. 92 Z2 STA PORT
  28. 93 RTS
  29. 100 ;******** SPEZIAL BETRIEBSSYSTEM *******
  30. 101 *= $6400 ; ZEICHENSATZ AENDERN
  31. 110 .BYTE $3C,$40,$8C,$92,$9E,$42,$3C,$00;KLAMMERAFFE
  32. 120 *= $6858
  33. 130 .BYTE $FE,$08,$14,$22,$00,$00,$00,$00;KLEINES K
  34. 150 *= $6A79;ROM CHECK UMGEHEN
  35. 160 BNE I1
  36. 170 I1 INC $00
  37. 200 *= $6AB1;MEMORY MANAGEMENT
  38. 210 LDA #$01;BIT 0 SETZEN OHNE SPEICHERVERTEILUNG
  39. 220 JSR J9;ZU AENDERN
  40. 230 JSR $EC61;INITIALISIEREN DER PORTS
  41. 300 *= $6BBE;REV 7X
  42. 310 .BYTE $37,$58
  43. 400 *= $6D2C;ANZAHL DER ZULAESSIGEN SA
  44. 410 .BYTE $10
  45. 500 *= $6D3D;SA TABELLE
  46. 510 .WORD J2-1,$EDB8,$EDBB,$EDF2,$EE00
  47. 520 .WORD $EE09,$EE22,$EE29,J3-1,$EE41
  48. 530 .WORD $EE4A,J4-1,J5-1,$EE35,J6-1,J7-1
  49. 600 *= $6D69;ABFRAGE AUF NEUE STEUERZEICHEN
  50. 610 JSR J1
  51. 700 *= $6E36;SA 13 SPEICHERVERTEILUNG FESTLEGEN
  52. 710 LDA $64;CODE HOLEN
  53. 720 ORA #01;BIT 0 MUSS GESETZT BLEIBEN
  54. 730 NOP
  55. 740 NOP
  56. 750 STA PORT;SELEKTION GUELTIG
  57. 760 JMP END;MUSS UNBEDINGT HIER STEHEN
  58. 800 *= $7660;PAPERFEED ROUTINE
  59. 810 JMP J8;ZUR ERWEITERUNG
  60. 820 NOP
  61. 900 *= $7B02;MEMORY MANAGEMENT
  62. 910 LDA PORT;LOW IMPULS VON 12 TAKTZYKLEN
  63. 920 AND #$FE; AUF BIT 0 LEGEN OHNE SPEICHER
  64. 930 STA PORT; VERTEILUNG ZU AENDERN
  65. 940 ORA #$01
  66. 950 JSR A1
  67. 1000 *= $7D01;*** MEMORY MANAGEMENT ***
  68. 1010 J9 ORA PORT
  69. 1020 A1 STA PORT
  70. 1030 RTS
  71. 1100 ;*** PAPERFEED ***
  72. 1110 J8 LDA $60;PAGING OFF
  73. 1120 BMI B1;JA, DANN NEUE ROUTINE
  74. 1130 JMP $F664;SONST WIE GEHABT
  75. 1140 B1 LDA #$FF;VORSCHUB VON 255 ZEILEN ANSTOSSEN
  76. 1150 JSR $F646
  77. 1160 LDA #$08
  78. 1170 B2 BIT $0280;PAPERFEEDTASTE GEDRUECKT
  79. 1180 BEQ B2;JA, DANN WEITER WARTEN
  80. 1190 LDA #$00;SONST MOTOR ABWUERGEN
  81. 1200 STA $92
  82. 1210 RTS
  83. 1300 ;*** ANFANG VON SA0 ***
  84. 1310 J2 LDA $64;WIE BISHER, MUSSTE NUR PLATZ
  85. 1320 BIT $0202;FUER SA-TABELLENERWEITERUNG MACHEN
  86. 1330 BPL C1
  87. 1340 LDY #$00
  88. 1350 STY $87
  89. 1360 C1 JMP $ED5E
  90. 1400 ;*** SA8 WEIL DORT JETZT SA13 ***
  91. 1410 J3 BIT $0202
  92. 1420 BMI D1
  93. 1430 LDA #$00
  94. 1440 STA $87
  95. 1450 D1 JMP END
  96. 1500 ;*** SA11 ROM INS RAM ***
  97. 1510 J4 LDY #$00;KOPIEREN VON E400 BIS FFFF
  98. 1520 STY $80; LOWBYTE
  99. 1530 LDA #$E4
  100. 1540 STA $81; HIGHBYTE
  101. 1550 E1 LDA ($80),Y;ROM LESEN
  102. 1560 STA ($80),Y;IN RAM SCHREIBEN, UMSCHALTUNG DURCH
  103. 1570 INY;     MEMORY MANAGER
  104. 1580 BNE E1
  105. 1590 INC $81
  106. 1600 BNE E1
  107. 1610 BEQ D1
  108. 1700 ;*** SA12 IN RAM SCHREIBEN ***
  109. 1710 J5 LDA $64;LOWBYTE DER ANFANGSADRESSE HOLEN
  110. 1720 STA $7E
  111. 1730 JSR IN;HIGHBYTE HOLEN
  112. 1740 BVS F1;SCHON ANDERE SA   JA, DANN FEHLER
  113. 1750 LDA $64
  114. 1760 STA $7F
  115. 1770 F3 JSR IN;ZEICHEN LESEN
  116. 1780 BVS F2;ENDE, WENN NEUE SA KOMMT
  117. 1790 LDA $64
  118. 1800 LDX #$00
  119. 1810 STA ($7E,X);ZEICHEN IN RAM
  120. 1820 INC $7E
  121. 1830 BNE F3;NAECHSTES ZEICHEN
  122. 1840 INC $7F
  123. 1850 BNE F3;NAECHSTES ZEICHEN
  124. 1860 JMP $ED23;RAMTOP ERREICHT, ENDE
  125. 1870 F1 JMP $EE80;TERMINATOR ERROR
  126. 1880 F2 JMP $ED26;REGULAERES ENDE
  127. 3000 ;*** SA14 8BIT GRAPHIK ***
  128. 3010 J6 LDA PORT
  129. 3020 AND #$EF
  130. 3030 STA PORT;RAM IM ZEICHENSATZBEREICH EINSCHALTEN
  131. 3040 LDA #$12
  132. 3050 STA $E9FE;GRAPHIKENDEANFORDERUNG RUECKSETZEN
  133. 3070 K1 LDA $64;ZEICHEN LADEN
  134. 3080 JSR H3;UND DER GRAPHIKROUTINE UEBERREICHEN
  135. 3130 K2 JSR IN;NAECHSTES ZEICHEN ABHOLEN
  136. 3140 BVC K1;NEUE SA       NEIN, DANN WEITER GRAPHIK
  137. 3160 LDY #$8D;SONST LETZTE ZEILE DRUCKEN
  138. 3170 JSR H6
  139. 3180 K3 LDA $7A;SCHON AUF PAPIER
  140. 3190 BNE K3;NEIN, DANN WARTEN
  141. 3200 LDA PORT;SONST ROM ZEICHENSATZ EINSCHALTEN
  142. 3210 ORA #$10
  143. 3220 STA PORT
  144. 3280 JMP $ED26;ENDE
  145. 4000 ;*** 7BIT-GRAPHIK  CHR$(8) ***
  146. 4010 J1 CMP #$08;CHR$(8) = GRAPHIK EIN EMPFANGEN
  147. 4020 BNE H1;NEIN DANN WEITER UNTERSUCHEN
  148. 4030 LDA PORT;SONST RAM IM ZEICHENSATZBEREICH EIN
  149. 4040 AND #$EF
  150. 4050 STA PORT
  151. 4052 LDA #$00;SKIP SPACE IM RAM LOESCHEN
  152. 4054 LDX #$07;     DAMIT TABULATORFUNKTION AUCH IM
  153. 4056 H0 STA $0900,X;GRAPHIKMODUS FUNKTIONIERT
  154. 4058 DEX
  155. 4059 BPL H0
  156. 4060 LDA #$12;ZEILENABSTAND GRAPHIKKONFORM SETZEN
  157. 4070 STA $86
  158. 4080 STA $E9FE;GRAPHIKENDEANFORDERUNG RUECKSETZEN
  159. 4090 STA $E9FF;GRAPHIKMODUS ANZEIGEN
  160. 4100 RTS;ZURUECK ZU SA0
  161. 4150 H1 LDX $E9FF;GRAPHIK EINGESCHALTET
  162. 4160 CPX #$12
  163. 4170 BEQ H2;JA, DANN GRAPHIKBEHANDLUNG
  164. 4180 JMP OUT;SONST AUSGABE WIE GEWOHNT
  165. 4190 H2 CMP #$80;ISTS EIN STEUERZEICHEN
  166. 4195 AND #$7F;MSB LOESCHEN
  167. 4200 BCS H3;ALS GRAPHIKZEICHEN VERARBEITEN
  168. 4210 CMP #$0E;CHR$(14)
  169. 4220 BEQ H4;JA, DANN GRAPHIKENDE BEANTRAGEN
  170. 4230 CMP #$0F;CHR$(15)
  171. 4240 BNE H5;NEIN, DANN WEITER UNTERSUCHEN
  172. 4250 H4 STA $E9FE;GRAPHIKENDE ANFORDERN
  173. 4260 LDA #$24
  174. 4270 STA $86;ZEILENABSTAND KORRIGIEREN
  175. 4280 RTS;WEITER MIT SA0
  176. 4300 H6 LDA $82;ZEILE ABSCHLIESSEN
  177. 4310 BEQ H7;ZAHL DER SPALTEN DURCH 8 TEILBAR
  178. 4320 H8 LDA #$00;SONST AUF GANZES ZEICHEN ERGAENZEN
  179. 4330 JSR H3
  180. 4340 LDA $82
  181. 4350 BNE H8
  182. 4360 H7 STA $80;REGISTER RUECKSETZEN
  183. 4370 STA $81
  184. 4380 STA $83
  185. 4390 TYA
  186. 4400 JSR OUT;ZEILENENDE SIGNALISIEREN
  187. 4410 LDA $E9FE
  188. 4420 CMP #$12;GRAPHIKENDE ANGEFORDERT
  189. 4430 BEQ H9;NEIN, DANN ZURUECK ZU SA0
  190. 4435 H22 LDA $7A;SONST WARTEN, BIS MECHANIK FERTIG
  191. 4436 BNE H22
  192. 4440 LDA PORT;UND ZEICHENSATZ-ROM EINSCHALTEN
  193. 4450 ORA #$10
  194. 4460 STA PORT
  195. 4470 LDA #$24
  196. 4480 STA $E9FF
  197. 4490 H9 RTS;ZURUECK ZU SA0
  198. 4500 H5 JSR $EFA2;AUF TERMINATOR UNTERSUCHEN
  199. 4510 TAY
  200. 4520 H20 BCS H6;ZEILE AUSDRUCKEN FALLS TERMINATOR
  201. 4530 CMP #$1A;CHR$(26) = ZEICHEN MEHRFACH DRUCKEN
  202. 4540 BNE H10;NEIN, DANN WEITER UNTERSUCHEN
  203. 4550 JSR IN;ANZAHL HOLEN
  204. 4560 STA $85
  205. 4570 JSR IN;ZEICHEN HOLEN
  206. 4573 LDA $64
  207. 4574 BPL H12;ENDE, FALLS NICHT GUELTIGES ZEICHEN
  208. 4575 AND #$7F;MSB LOESCHEN
  209. 4580 STA $7F
  210. 4590 H11 LDA $7F
  211. 4600 JSR H3;ZEICHEN SO OFT AUSGEBEN WIE VERLANGT
  212. 4610 DEC $85
  213. 4620 BNE H11
  214. 4630 H12 RTS;ZURUECK ZU SA0
  215. 4640 H10 CMP #$0C;CHR$(12) = FORMFEED
  216. 4650 BNE H12;ZURUECK ZU SA0 FALLS NICHT
  217. 4660 TAY
  218. 4670 JMP H6;SONST ZEILE BEENDEN
  219. 4700 H3 LDX #$00;GRAPHIKZEICHENVERARBEITUNG
  220. 4705 STX $84
  221. 4710 LDX #$08
  222. 4715 H13 ROR A;ZEICHEN UMDREHEN
  223. 4720 ROL $84
  224. 4725 DEX
  225. 4730 BNE H13
  226. 4735 H23 LDA $81
  227. 4740 CMP #$E4;ERSTES ZEICHEN
  228. 4745 BCS H14
  229. 4750 ADC #$E4;JA DANN ADRESSOFFSET ADDIEREN
  230. 4755 STA $81
  231. 4760 H14 LDA $84
  232. 4762 LDX #$00
  233. 4765 STA ($80,X);ZEICHEN IN RAM
  234. 4770 INC $80
  235. 4775 BNE H15
  236. 4780 INC $81
  237. 4785 H15 DEC $82
  238. 4790 BPL H12;JEWEILS 8 ZEICHEN GEBEN EINS IM PUFFER
  239. 4800 LDA #$4F;80 ZEICHEN PRO ZEILE
  240. 4802 LDX $65
  241. 4805 CPX #$0E;SA 14
  242. 4807 BEQ H21
  243. 4810 LDA #$3B;SONST NUR 60 ZEICHEN
  244. 4812 H21 CMP $83
  245. 4815 BCS H16;ZEILENENDE NICHT ERREICHT
  246. 4817 LDY #$0D
  247. 4818 LDA #$00
  248. 4819 STA $82
  249. 4820 JSR H7;ZEILE ABSCHLIESSEN
  250. 4821 H24 LDA $7A
  251. 4822 BNE H24;AUSDRUCK ABWARTEN
  252. 4823 JMP H23;NEUE ZEILE BEGINNEN
  253. 4825 H16 LDX #$07;ZAEHLER 0..7 RUECKSETZEN
  254. 4830 STX $82
  255. 4835 LDA $83;UMRECHNUNG ZEICHENSATZPLATZ IN ASCII
  256. 4840 CMP #$20
  257. 4845 BCS H18
  258. 4850 ADC #$40
  259. 4855 BCC H19
  260. 4860 H18 CMP #$40
  261. 4865 BCC H19
  262. 4870 ADC #$1F
  263. 4875 H19 INC $83
  264. 4880 JMP OUT;ASCII CODE IN PUFFER
  265. 5000 *= $7F00;*** SA15 HEXDUMPMODE ***
  266. 5010 G1 JSR IN
  267. 5020 BVS G6
  268. 5030 J7 JSR $EFA2; ** _ ** EINSPRUNG HIER !
  269. 5040 BCC G1;AUF TERMINATOR WARTEN
  270. 5050 G4 JSR IN;ZEICHEN HOLEN
  271. 5060 BVS G2;FALLS SA GEWECHSELT, DIESE AUSGEBEN
  272. 5070 G5 LDA $64;SONST ZEICHEN LADEN,
  273. 5080 STA $80;SICHERN,
  274. 5090 JSR G3;HEXCODE BERECHNEN UND AUSGEBEN
  275. 5100 JMP G4;NAECHSTES ZEICHEN
  276. 5110 G2 LDA #$0D;NEUE SA MIT
  277. 5120 JSR OUT;NEUER ZEILE
  278. 5130 LDA #$2A;UND STERNCHEN WUERDIGEN
  279. 5140 JSR OUT
  280. 5150 CLV
  281. 5160 LDA $65;SA LADEN,
  282. 5170 STA $80;SICHERN,
  283. 5180 JSR G3;HEXCODE BERECHNEN UND AUSGEBEN
  284. 5190 JMP G5;ZUGEHOERIGES ZEICHEN HINTERHER
  285. 5200 G6 JMP $EE80;TERMINATOR ERROR
  286. 5210 G3 LSR A;HIGHNIBBLE BERECHNEN
  287. 5220 LSR A
  288. 5230 LSR A
  289. 5240 LSR A
  290. 5250 JSR G7;UND AUSGEBEN
  291. 5260 LDA $80;LOWNIBBLE BERECHNEN
  292. 5270 AND #$0F
  293. 5280 JSR G7;UND AUSGEBEN
  294. 5290 LDA #$20;LEERZEICHEN
  295. 5300 JSR OUT;ZWEIMAL
  296. 5310 JSR OUT;ZWISCHEN ZWEI BYTES AUSGEBEN
  297. 5320 RTS
  298. 5330 G7 CLC;NIBBLE IN HEXADEZIMALDARSTELLUNG
  299. 5340 ADC #$30;VERKLEIDEN
  300. 5350 CMP #$3A
  301. 5360 BCC G8
  302. 5370 ADC #$06
  303. 5380 G8 JSR OUT;UND IN DRUCKERPUFFER DRUECKEN
  304. 5390 RTS
  305. 8000 *= $7FF1;RESETVEKTOR
  306. 8010 LDA #$FF;RESET EINSPRUNG
  307. 8020 STA PORT;ALLE PORTPINS AUF HIGH
  308. 8030 STA $0242;ALLE PORTPINS ALS AUSGAENGE
  309. 8040 JMP $EA31;ZUM ALTEN EINSPRUNG
  310. 8050 .WORD $FFF1;NEUER RESETVEKTOR
  311.